import { useComponentRef } from './useComponentRef'
import PageModal from '../page/modal/index.vue'

type ICallbackFn = (data?: any) => void

/**
 * 处理页面模态框钩子函数
 * @returns 一个对象，包含modalRef、handleEditClick和handleNewClick三个属性
 */
export function usePageModal(
  createCallback?: ICallbackFn,
  editCallback?: ICallbackFn
) {
  // 定义一个ref，用于存储PageModal的实例
  // const modalRef = ref<InstanceType<typeof PageModal>>()
  const modalRef = useComponentRef(PageModal)
  // 定义一个函数，用于处理编辑按钮的点击事件
  const handleEditClick = (row: any) => {
    // 调用PageModal实例的setModalVisible方法，传入false和row参数
    modalRef.value?.setModalVisible(false, row)
    if (editCallback) {
      editCallback(row)
    }
  }
  // 定义一个函数，用于处理新建按钮的点击事件
  const handleNewClick = () => {
    // 调用PageModal实例的setModalVisible方法，传入true参数
    modalRef.value?.setModalVisible()
    if (createCallback) {
      createCallback()
    }
  }
  // 返回一个对象，包含modalRef、handleEditClick和handleNewClick三个属性
  return {
    modalRef,
    handleEditClick,
    handleNewClick
  }
}
